// import { IsNotEmpty, Max, MaxLength, Min, MinLength, validate } from 'class-validator';
// import 'reflect-metadata';

// class User {

//   @IsNotEmpty({ message: "账号不能为空！" }) 
//   @MinLength(5, { message: "账号最少5个字符！" }) 
//   @MaxLength(12, { message: "账号最多5个字符！" }) 
//   account: string

//   pwd: string

//   @Min(0, { message: "年龄的最小值为0" })
//   @Max(100, { message: "年龄的最大值为100" })
//   age: number

//   sex: '男' | '女'
// }

// const u = new User()

// // 验证类
// validate(u).then(err => {
//   console.log(err);
// })


import 'reflect-metadata';
import {plainToClass, Type} from 'class-transformer'
const obj = {
  id:'1',
  name:'xyz',
  age: '100'
}

class User {
  id: string
  name: string

  @Type(()=>Number) // '100' => 100
  age: number
  getName(){
    console.log('this.name is', this.name);
  }
}

const newObj = plainToClass(User, obj) 
console.log(newObj.getName()); // this.name is xyz
console.log(typeof newObj.age); // number





